#ifndef __v3d_renderer_h__
#define __v3d_renderer_h__

#include "v3d_defs.h"
#include "texture_mgr.h"
#include "glm/glm.hpp"

class ModelData;
class LightMgr;

class V3dRenderer : public V3dObject
{
public:
	TextureMgr *textureMgr;
	LightMgr *lightMgr;

public:
	V3dRenderer(void);
	virtual ~V3dRenderer(void);

	virtual void Resize(int32 width, int32 height){}
	virtual void Update();

	virtual void InitRenderer()=0;

	virtual void SetSurfaceMaterialProperty(glm::vec4 *ambient, glm::vec4 *diffuse, glm::vec4 *specular, glm::vec2 *shine, glm::vec4 *emission, bool force = false) = 0;

	virtual int	Render(ModelData *md){return SUCCESS;}

	static V3D_RENDERER_TYPE renderer_type;
	static V3dRenderer *I;
	static void Init();
	static void DeInit();



};

#endif	//__v3d_renderer_h__

